import request from '@/utils/request'

/**
 * 查询生成表数据
 * @param {Object} query - 查询参数
 * @returns {Promise} 返回查询结果的Promise对象
 */
export function listTable(query) {
  return request({
    url: '/tool/gen/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询db数据库列表
 * @param {Object} query - 查询参数
 * @returns {Promise} 返回查询结果的Promise对象
 */
export function listDbTable(query) {
  return request({
    url: '/tool/gen/db/list',
    method: 'get',
    params: query
  })
}

/**
 * 查询表详细信息
 * @param {string|number} tableId - 表ID
 * @returns {Promise} 返回表详细信息的Promise对象
 */
export function getGenTable(tableId) {
  return request({
    url: '/tool/gen/' + tableId,
    method: 'get'
  })
}

/**
 * 修改代码生成信息
 * @param {Object} data - 要修改的数据对象
 * @returns {Promise} 返回修改结果的Promise对象
 */
export function updateGenTable(data) {
  return request({
    url: '/tool/gen',
    method: 'put',
    data: data
  })
}

/**
 * 导入表
 * @param {Object} data - 导入表的相关参数
 * @returns {Promise} 返回导入结果的Promise对象
 */
export function importTable(data) {
  return request({
    url: '/tool/gen/importTable',
    method: 'post',
    params: data
  })
}

/**
 * 创建表
 * @param {Object} data - 创建表所需的数据
 * @returns {Promise} 返回创建结果的Promise对象
 */
export function createTable(data) {
  return request({
    url: '/tool/gen/createTable',
    method: 'post',
    params: data
  })
}

/**
 * 预览生成代码
 * @param {string|number} tableId - 表ID
 * @returns {Promise} 返回预览代码的Promise对象
 */
export function previewTable(tableId) {
  return request({
    url: '/tool/gen/preview/' + tableId,
    method: 'get'
  })
}

/**
 * 删除表数据
 * @param {string|number} tableId - 要删除的表ID
 * @returns {Promise} 返回删除结果的Promise对象
 */
export function delTable(tableId) {
  return request({
    url: '/tool/gen/' + tableId,
    method: 'delete'
  })
}

/**
 * 生成代码（自定义路径）
 * @param {string} tableName - 表名称
 * @returns {Promise} 返回生成代码的Promise对象
 */
export function genCode(tableName) {
  return request({
    url: '/tool/gen/genCode/' + tableName,
    method: 'get'
  })
}

/**
 * 同步数据库
 * @param {string} tableName - 表名称
 * @returns {Promise} 返回同步结果的Promise对象
 */
export function synchDb(tableName) {
  return request({
    url: '/tool/gen/synchDb/' + tableName,
    method: 'get'
  })
}
